Component({
	data: {
		selected: 0,
		color: "#A8A5A7",
		selectedColor: "#333333",
    	backgroundColor: "#FFFFFF",
		// 基础库版本信息
		baseLibVersion: wx.getSystemInfoSync().SDKVersion,
		// 添加初始化状态标记
		isInitialized: false,
		// 底部安全区域高度
		safeAreaBottom: 0,
		list: [
			{
				pagePath: "pages/home/index/index",
				text: "首页",
				iconPath: "/assets/icons/icon_home.png",
				selectedIconPath: "/assets/icons/icon_home_cur.png"
			},
			{
				pagePath: "pages/main/equipment-list/index",
				text: "设备",
				iconPath: "/assets/icons/icon_tool.png",
				selectedIconPath: "/assets/icons/icon_tool_cur.png"
			},
			{
				pagePath: "pages/main/user-profile/index",
				text: "我的",
				iconPath: "/assets/icons/icon_me.png",
				selectedIconPath: "/assets/icons/icon_me_cur.png"
			}
		]
	},

	attached() {
		console.log('TabBar组件 attached 生命周期');
		// 获取安全区域信息
		this.getSafeAreaInfo();
		// 检查基础库版本兼容性
		this.checkCompatibility();
		
		// 立即尝试初始化，不延迟
		this.updateSelectedFromCurrentPage();
		
		// 添加多重初始化保障
		setTimeout(() => {
			if (!this.data.isInitialized) {
				console.log('TabBar延迟初始化');
				this.updateSelectedFromCurrentPage();
			}
		}, 50);
		
		setTimeout(() => {
			if (!this.data.isInitialized) {
				console.log('TabBar强制初始化');
				this.updateSelectedFromCurrentPage();
			}
		}, 200);
	},

	methods: {
		/**
		 * 获取安全区域信息
		 */
		getSafeAreaInfo() {
			try {
				const systemInfo = wx.getSystemInfoSync();
				console.log('系统信息:', systemInfo);
				
				// 获取底部安全区域高度
				const safeAreaBottom = systemInfo.safeAreaInsets ? systemInfo.safeAreaInsets.bottom : 0;
				console.log('底部安全区域高度:', safeAreaBottom);
				
				// 转换为rpx单位 (750rpx = systemInfo.windowWidth)
				const safeAreaBottomRpx = (safeAreaBottom * 750) / systemInfo.windowWidth;
				
				this.setData({
					safeAreaBottom: safeAreaBottomRpx
				});
				
				console.log('底部安全区域高度(rpx):', safeAreaBottomRpx);
			} catch (error) {
				console.error('获取安全区域信息失败:', error);
			}
		},

		/**
		 * 检查基础库版本兼容性
		 */
		checkCompatibility() {
			const version = this.data.baseLibVersion;
			const compareVersion = this.compareVersion;
			
			if (compareVersion(version, '2.5.0') < 0) {
				console.warn('当前基础库版本过低，自定义tabBar可能无法正常工作');
				// 可以在这里添加降级处理逻辑
			}
		},
		
		/**
		 * 版本号比较
		 */
		compareVersion(v1, v2) {
			const v1parts = v1.split('.');
			const v2parts = v2.split('.');
			const maxLength = Math.max(v1parts.length, v2parts.length);
			
			for (let i = 0; i < maxLength; i++) {
				const v1part = parseInt(v1parts[i] || 0);
				const v2part = parseInt(v2parts[i] || 0);
				
				if (v1part < v2part) return -1;
				if (v1part > v2part) return 1;
			}
			return 0;
		},
		
		/**
		 * 切换tab页面
		 */
		switchTab(e) {
			const data = e.currentTarget.dataset;
			const url = data.path;
			const index = data.index;
			
			console.log(`[TabBar] 点击切换tab: index=${index}, url=${url}, 当前选中=${this.data.selected}`);
			
			// 防止重复点击同一个tab
			if (this.data.selected === index) {
				console.log(`[TabBar] 重复点击同一tab，忽略`);
				return;
			}
			
			// 检查是否需要登录的页面
			if (this.needsLogin(url)) {
				if (!this.checkLoginStatus()) {
					console.log(`[TabBar] 需要登录，跳转到登录页面`);
					this.redirectToLogin(`/${url}`);
					return;
				}
			}
			
			// 立即更新选中状态，提升响应速度
			console.log(`[TabBar] 更新选中状态: ${this.data.selected} -> ${index}`);
			this.setData({
				selected: index
			});
			
			// 跳转页面
			wx.switchTab({ 
				url: `/${url}`,
				success: () => {
					console.log(`[TabBar] 成功切换到${this.data.list[index].text}页面，选中状态: ${index}`);
					// 确保TabBar状态正确
					this.setData({
						selected: index,
						isInitialized: true
					});
				},
				fail: (err) => {
					console.error('[TabBar] 页面跳转失败:', err);
					// 跳转失败时恢复原有状态
					const previousIndex = this.data.selected === index ? 0 : this.data.selected;
					console.log(`[TabBar] 跳转失败，恢复选中状态: ${index} -> ${previousIndex}`);
					this.setData({
						selected: previousIndex
					});
				}
			});
		},
		
		/**
		 * 更新选中状态（支持skyline模式的异步调用）
		 */
		updateSelected(index) {
			console.log(`[TabBar] updateSelected被调用: ${index}，当前选中: ${this.data.selected}`);
			if (typeof index === 'number' && index >= 0 && index < this.data.list.length) {
				console.log(`[TabBar] 有效索引，更新选中状态: ${this.data.selected} -> ${index}`);
				this.setData({
					selected: index
				});
			} else {
				console.warn(`[TabBar] 无效索引: ${index}，有效范围: 0-${this.data.list.length - 1}`);
			}
		},
		
		/**
		 * 检查页面是否需要登录
		 */
		needsLogin(url) {
			// 需要登录的页面列表
			const loginRequiredPages = [
				'pages/main/equipment-list/index',
				'pages/main/user-profile/index'
			];
			return loginRequiredPages.includes(url);
		},

		/**
		 * 检查用户登录状态
		 */
		checkLoginStatus() {
			const token = wx.getStorageSync('token');
			const userId = wx.getStorageSync('userId');
			return !!(token && userId);
		},

		/**
		 * 跳转到登录页面
		 */
		redirectToLogin(targetUrl) {
			const loginUrl = `/pages/user/login/index?redirect=${encodeURIComponent(targetUrl)}`;
			console.log(`[TabBar] 跳转到登录页面，目标页面: ${targetUrl}`);
			wx.navigateTo({
				url: loginUrl,
				success: () => {
					console.log(`[TabBar] 成功跳转到登录页面`);
				},
				fail: (error) => {
					console.error('[TabBar] 跳转登录页面失败:', error);
					wx.showToast({
						title: '请先登录',
						icon: 'none',
						duration: 2000
					});
				}
			});
		},

		/**
		 * 从当前页面路由更新选中状态
		 */
		updateSelectedFromCurrentPage() {
			try {
				console.log('开始更新TabBar选中状态');
				const pages = getCurrentPages();
				console.log('当前页面栈:', pages.map(p => p.route));
				
				if (pages.length > 0) {
					const currentPage = pages[pages.length - 1];
					const currentRoute = currentPage.route;
					console.log('当前页面路由:', currentRoute);
					
					// 找到当前页面对应的tab索引
					const index = this.data.list.findIndex(item => item.pagePath === currentRoute);
					console.log('找到的TabBar索引:', index);
					
					if (index !== -1) {
						// 强制更新选中状态
						this.setData({
							selected: index,
							isInitialized: true
						});
						console.log(`TabBar 更新选中状态成功: ${index} (${currentRoute})`);
						
						// 强制触发视图更新
						this.$forceUpdate && this.$forceUpdate();
					} else {
						console.warn(`当前页面 ${currentRoute} 不在 TabBar 列表中`);
						// 如果找不到匹配的页面，标记为已初始化，避免重复尝试
						this.setData({
							isInitialized: true
						});
					}
				} else {
					console.warn('页面栈为空，无法获取当前页面');
					// 页面栈为空时，标记为已初始化
					this.setData({
						isInitialized: true
					});
				}
			} catch (error) {
				console.error('获取当前页面信息失败:', error);
				// 出错时也标记为已初始化，避免无限重试
				this.setData({
					isInitialized: true
				});
			}
		},
		
		/**
		 * 兼容 Skyline 模式的 getTabBar 接口（为页面提供统一调用方法）
		 */
		init() {
			// 对外暴露的初始化方法，供页面调用
			console.log('TabBar init 方法被调用');
			this.updateSelectedFromCurrentPage();
		},
		
		/**
		 * 强制刷新TabBar状态（供外部调用）
		 */
		forceRefresh() {
			console.log('TabBar 强制刷新');
			this.setData({
				isInitialized: false
			});
			this.updateSelectedFromCurrentPage();
		},
		
		/**
		 * 手动设置选中状态（供外部调用）
		 */
		setSelected(index) {
			console.log(`[TabBar] setSelected被调用: ${index}，当前选中: ${this.data.selected}`);
			if (typeof index === 'number' && index >= 0 && index < this.data.list.length) {
				console.log(`[TabBar] 设置选中状态: ${this.data.selected} -> ${index}`);
				this.setData({
					selected: index,
					isInitialized: true
				});
			} else {
				console.warn(`[TabBar] setSelected无效索引: ${index}，有效范围: 0-${this.data.list.length - 1}`);
			}
		}
	}
})